import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.IOException;
import java.util.Properties;
import java.util.Timer;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;

/**
 * Cette classe permet d'aider l'utilisateur à comprendre le fonctionnement de l'application
 * Pour ce faire, il a accès à une page d'explication du fonctionnement ainsi qu'a la définition du jeu en ligne
 **/

class AideFenetre extends JFrame implements MouseListener{
	   
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JTextArea textSave = new JTextArea(); 	/*Champ de saisis*/
	private JButton boutonFermer = new JButton(); 		/*Bouton Fermer*/
	private JButton boutonWiki = new JButton(); 		/*Bouton lien vers wikipédia*/
	private JPanel panel = new JPanel(); 				/*Panel regoupant le champ de saisis et le bouton de validation*/
	private Fenetre fTmp;								/*Attribut fenetre temporaire*/
	
	/*Constructeur*/
	public AideFenetre(Fenetre f) {
		
		setUndecorated(true); 
		this.setResizable(false);
		
		/*Disposition et dimentions de la Fenêtre de sauvegarde*/
        setSize(800,400);
        setLocation(100, 200);
        this.setLayout(new BorderLayout());
        setTitle("Notification Explicative : Mode d'emploi");
        setVisible(true);
        
        fTmp = f;
        fTmp.disable();
   
        /*Configuration des éléments du panel de la fenêtre*/
        boutonWiki.setText("Explications en ligne");
        boutonFermer.setText("Fermer");
        
        textSave.setEditable(false);
        textSave.setFocusable(false);
        textSave.setText("Voici les règles du jeu :" +"\n"+
        		"- La patrie se déroule comme aux echecs classiques." +"\n"+
        		"- Les pièces se déplacent via un autre échiquier situé à droite, puis de cet autre échiquier vers celui de gauche pour chaque déplacement." +"\n"+
        		"- La prise en passant n'est pas prise en compte" +"\n"+
        		"- La prise d'une pièce n'est possible que si les 2 pièces (la prenante et la prise) sont sur le même échiquier." +"\n"+
        		"- Pour qu'un déplacement soit valide, il faut que la case sur l'chiquier de destination soit vide." +"\n"+
        		"- Les déplacments s'effectuent comme aux échecs classique (ici par échiquier :\n \t les trajectoires des tours, fous et reines sont valide sur l'échiquier de destination)." +"\n"+
        		"" +"\n"+
        		"Fonctionnement de l'application :"+"\n"+
        		"- Une notification indique le tour du joueur (affichée en haut)." +"\n"+
        		"- Une notification signale au joueur en train de joueur si il a commi une erreur de déplacement,\n \t ou si il ne respecte pas les règles,\n  \t ou au contraire si tout se passe bien." +"\n"+
        		"- Si un pion arrive à l'autre bord de l'échiquier (noir en bas ou blanc en haut),\n \t  une fenêtre apparait pour que le joueur concerné choisisse la pièce qu'il désire pour cette promotion de pièce." +"\n"+
        		"- La partie peut être sauvegardée à tout moment par l'utilisateur (par l'intérmédiaire du menu) :\n \t  ce dernier devra choisir un nom pour sauver la partie en cours." +"\n"+
        		"- L'utilisateur à aussi la possibilité de charger une partie existante." +"\n"+
        		"" +"\n"+
        		"Pour réafficher cette fenêtre ou voir les explictions en lignes, cliquez sur la Notice Explicative du menu... Bonne Partie !" +"\n");
        
        textSave.setBounds(0,0,400 ,500 );
        boutonWiki.setBounds(0, 350, 180, 50);
        boutonFermer.setBounds(240, 350, 180, 50);
        
        /*Ajout des éléments au panel*/
        add(textSave,BorderLayout.CENTER);

        panel.add(boutonWiki);
        panel.add(boutonFermer);
                
        /*Ajout des interactions utilisateur*/
        boutonWiki.addMouseListener(this);
        boutonFermer.addMouseListener(this);
        
        /*Affichage*/
        this.getContentPane().add(panel,BorderLayout.SOUTH);
    }
	
	private void setDefaultCloseOperation(Object dispose) {
		// TODO Auto-generated method stub
	}

	/*Validation : évenement sur click des boutons*/
	
	public void mouseReleased(MouseEvent e) {
		
		if ( e.getSource() == boutonWiki)
		{
			Properties sys = System.getProperties();
			String os = sys.getProperty("os.name");
			Runtime r = Runtime.getRuntime();
			try
			{
			if (os.endsWith("NT")||os.endsWith("2000")||os.endsWith("XP"))
				r.exec("cmd /c start http://fr.wikipedia.org/wiki/%C3%89checs_d%27Alice");
			else
				r.exec("start http://fr.wikipedia.org/wiki/%C3%89checs_d%27Alice");
			}
			catch (IOException ex)
			{
				ex.printStackTrace();
			} 
		}
		if ( e.getSource() == boutonFermer)
		{
			close();
		}
	}
	
	public void close()
	{
		dispose(); /*Fermeture de la fenêtre*/
		fTmp.enable();
	}

	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub	
	}

	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub	
	}

	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub	
	}

	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub	
	}
}